function AllReady() {
    var mstform = Ext.getCmp('CntM4');//获取容器   
    var dgrid = Ext.getCmp('CntD4');//获取容器   
    var toolbar = Ext.getCmp('toolbar');

    var PhidDept = mstform.queryById('PhidDept');//获取字段
    var PhidPc = mstform.queryById('PhidPc');
    var PhidYsfl = mstform.queryById('PhidYsfl');
    var Iscb = mstform.queryById('Iscb');
    var user_taxrate = mstform.queryById('user_taxrate');

    var user_product_line = mstform.queryById('user_product_line');
    var user_regional_center = mstform.queryById('user_regional_center');
    // 去掉明细里面的合同清单名称的必输
    dgrid.setMustInputCol("ItemName",false)
    dgrid.hideColumn('ItemName', true);
    PhidPc.addListener('helpselected', function () {
        execServer('getProjInfo', { 'pc': PhidPc.getValue() }, function (res) {
            if (res.count > 0) {
                var obj = JSON.parse(res.data);
                PhidDept.setValue(obj[0].extendObjects.dept)
                user_product_line.setValue(obj[0].extendObjects.cpx)
                user_regional_center.setValue(obj[0].extendObjects.qyzx)
                BatchBindCombox([PhidDept])
                BatchBindCombox([user_product_line])
                BatchBindCombox([user_regional_center])
            }
        });
        // execServer("getPtInfoByPhid", {phid: mstform.queryById("PhidPc").getValue()}, (res)=>{
        //     const data = JSON.parse(res.data)[0].extendObjects
        //     console.log("项目信息监听", data);
        //     const _center = mstform.queryById("user_regional_center")
        //     _center.setValue(data.regional_center_phid)
        //     BatchBindCombox([_center])
        // })

    });
    // execServer("getPtInfoByPhid", {phid: mstform.queryById("PhidPc").getValue()})
    dgrid.addListener('edit', function (editor, e) {//表体编辑触发
        var record = e.record;
        var data = dgrid.getSelectionModel().getSelection(); //获取当前选中行
        // if(){}
        console.log(`监听行`, data);
        sunAdd(dgrid)
        const date1 = data[0].data.user_start_dt
        const date2 = data[0].data.user_end_dt
        const _date = monthsBetweenDates(date1, date2)
        data[0].set("user_pq_month", _date)
        data[0].set("user_fw_amt", Number(data[0].get("user_fw_amt_month")) * Number(data[0].get("user_pq_month")))
        data[0].set("user_yg_amt", Number(data[0].get("user_yg_amt_month")) * Number(data[0].get("user_pq_month")))
        data[0].set("AmtVatFc", Number(data[0].get("user_fw_amt")) + Number(data[0].get("user_yg_amt")))
        data[0].set("user_amt_month", Number(data[0].get("user_fw_amt_month")) + Number(data[0].get("user_yg_amt_month")))
        data[0].set("user_total_amt", Number(data[0].get("user_fw_amt")) + Number(data[0].get("user_yg_amt")))
    });

    dgrid.getColumn('user_position_name').getEditor().on('beforetriggerclick', function (eOp, ignoreBeforeEvent) {
        dgrid.getColumn('user_position_name').getEditor().setOutFilter({ 'm.phid_pc': mstform.getItem('PhidPc').getValue() })
        var data = dgrid.getSelectionModel().getSelection();
        dgrid.getColumn('user_position_name').getEditor().addListener('helpselected', function (record) {
            dgrid.getSelectionModel().getSelection()[0].data.user_wage_standard = record.data.u_wage_standard;
            dgrid.getSelectionModel().getSelection()[0].data.user_qualification_grade = record.data.u_qualification_grade;
            dgrid.getView().refresh();
        })
    
    })





    if (otype == 'add') {
        user_taxrate.setValue('0.06')
    }


    if (otype == 'add' || otype == 'edit') {
        PhidYsfl.setValue('14')
        Iscb.setValue('1')
        BatchBindCombox([PhidYsfl])

        mstform.getItem('PhidYsfl').setVisible(false);
        mstform.getItem('Iscb').setVisible(false);
        mstform.getItem('ExchRate').setVisible(false);
        mstform.getItem('CurrType').setVisible(false);
        mstform.getItem('CntType').setVisible(false);



        dgrid.setMustInputCol('Unit_EXName', false);
        dgrid.hideColumn('Unit_EXName', true);
    }
    function sunAdd(d) {
        const _data = d.store
        let _sum = 0;
        for (let i = 0; i < _data.getCount(); i++) {
            _sum += Number(_data.getAt(i).get("AmtVatFc"))
        }
        mstform.getItem("CntSumFc").setValue(_sum * Number(mstform.getItem("user_taxrate").getValue()))
        mstform.getItem("CntSumVatFc").setValue(_sum)
    }


    //计算派遣月数
    function monthsBetweenDates(date1, date2) {
        if (!date1 || !date2) return 0;
        // 获取两个日期的时间戳（以毫秒为单位）
        const timestamp1 = date1.getTime();
        const timestamp2 = date2.getTime();

        // 计算两个日期的时间差（以毫秒为单位）
        const timeDiff = timestamp2 - timestamp1;

        // 将时间差转换为月数（假设一个月平均按30天算，一天按24小时算，一小时按60分钟算，一分钟按60秒算，一秒按1000毫秒算）
        const monthsDiff = timeDiff / (30 * 24 * 60 * 60 * 1000);

        // 保留约等于5位小数
        return parseFloat(monthsDiff.toFixed(5));
    }
}

